home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
magazyn_amiga
/
3
/
ami040a_kurs_amosa.ram
< prev
next >
Wrap
Text File
|
1997-09-14
|
2KB
|
71 lines
<sr>Tablice zmiennej dîugoôci
<txt>Chyba jednâ z najwiëkszych bolâczek AMOS-a jest to, ûe nie
moûna zmieniaê rozmiaru raz zadeklarowanej tablicy. Czy jest
jakieô rozwiâzanie tego problemu?
Elementy tablicy moûna trzymaê w banku AMOS-a (zamiast w
tablicy). Przypuôêmy, ûe chcemy tam wrzucaê liczby caîkowite.
Wobec tego bank rozmiaru >N*4< bajtów, bëdzie zawieraî >N< paczek
danych po 4 bajty (cztery bajty = dîugie sîowo = liczba
caîkowita). Te wiadomoôci chyba wystarczâ, ûeby oprogramowaê
kilka procedur, umoûliwiajâcych wydobywanie i wstawianie
elementów na pozycjë >I< takiego banku. Oto nagîówki tych
procedur:
<l>
Procedure BANK_INIT[BANK,N]
' inicjalizuje "tablicë" w banku
' BANK - numer banku do przechowywania danych
' N - liczba przechowywanych elementów
' (po prostu rezerwujemy bank)
Procedure BANK_KONIEC
' zwalnia pamiëê zajmowanâ przez bank
Procedure BANK_WSTAW[I,ELEMENT]
' wstawia liczbë ELEMENT na pozycjë I
' (wystarczy uûyê rozkazu Loke)
Procedure BANK_WEZ[I]
' pobiera liczbë z banku, znajdujâcâ sië
' na pozycji I (trzeba uûyê Leek i Param
' - przy wyjôciu z procedury)
<txt>Uwaga, jeûeli zarezerwujemy bank staîy, to mamy dodatkowâ
zaletë -- raz zapisane do banku dane juû nam nie zginâ, gdyû
zostanâ zapisane razem z programem na dysk.
No dobrze, a gdzie zmienna dîugoôê tablicy? Aleû majâc
bank pamiëci, moûemy z nim robiê, co nam sië ûywnie podoba,
czyli miëdzy innymi:
<l>
Procedure BANK_ZWIEKSZ[J]
' zwiëksza rozmiar banku o J
' gdy J ujemne - zmniejsza
Procedure BANK_ROZMIAR[N]
' ustal rozmiar banku na N
<txt>A teraz najwiëkszy "bajer", wszak przy wstawianiu elementów
moûna dynamicznie zwiëkszaê rozmiar pamiëci na tablicë w banku.
Czyû nie? Moûna teû dodaê wiëcej sztuczek, ale to juû pozostawiam
do przemyôlenia Czytelnikom.